package com.nextel.project.usuario.rms;

 
import com.nextel.project.Configuracion;

import com.nextel.project.usuario.bean.GeneralBean;
import pe.com.nextel.rms.GestorRMS;
import pe.com.nextel.rms.Persistente;
import java.util.Stack;
import pe.com.nextel.util.ArrayList;
import pe.com.nextel.util.List;

/**
 *
 * @author eespinoza
 */
public class RMSGeneral extends GestorRMS {
    
    private GeneralBean bean = new GeneralBean();
 
    
    public RMSGeneral() {
        super("RMS_GENERAL");
    }
    
    protected Persistente createObjectBean() {
        return bean;
    }
    
    public void guardarLista(String codigoGrupo, List lista) throws Exception {
        guardar(lista); 
    }
    
    public void grabarGeneral(Stack objectStack) throws Exception {
        try {
            abrirRS(); 
            
            GeneralBean beanTemp;
            Object obj;
            
            List lista = new ArrayList();
            int i=0;
            String codigoGrupo = "0";
            
            //mientras haya datos en la pila
            while ( (obj = objectStack.pop()) != null ) {
                beanTemp = (GeneralBean) obj;
                
                if(i == 0){
                     i++;
                    codigoGrupo = beanTemp.getGrupo();
                }else{
                    if(!codigoGrupo.equals(beanTemp.getGrupo())){
                        if(lista.size() > 0){
                            guardarLista(codigoGrupo,lista);
                            lista.clear();
                            System.gc();
                        }
                        codigoGrupo = beanTemp.getGrupo();
                    }
                }
                lista.add(beanTemp);
                
                if(lista.size() % Configuracion.RMS_CANTREG == 0 && !lista.isEmpty()){
                    guardarLista(codigoGrupo,lista);
                    lista.clear();
                    System.gc();
                }
            }
            
            if(!lista.isEmpty()){

                guardarLista(codigoGrupo,lista);
                lista.clear();
                System.gc();
            }
            
            lista = null;
            System.gc();
            
        } finally {
            cerrarRS(); 
        }
    }
   
    
    
}
